/**
 * 权限指令
 * 用法：v-permission="'permission.code'"
 */
export default {
  mounted(el, binding) {
    const permission = binding.value;
    if (!hasPermission(permission)) {
      // 如果没有权限，默认移除元素
      el.parentNode && el.parentNode.removeChild(el);
    }
  }
}

/**
 * 检查是否有权限
 * @param {String} permission 权限代码
 * @returns {Boolean}
 */
export function hasPermission(permission) {
  // 从本地存储获取用户信息
  const userStr = localStorage.getItem('user');
  if (!userStr) return false;
  
  try {
    const user = JSON.parse(userStr);
    
    // 如果是管理员，拥有所有权限
    if (user.role === 'admin') {
      return true;
    }
    
    // 如果用户有权限列表，检查是否包含所需权限
    if (user.permissions && Array.isArray(user.permissions)) {
      return user.permissions.includes(permission);
    }
    
    // 根据角色检查权限
    // 这里可以根据具体业务逻辑定义不同角色的权限
    const rolePermissions = {
      manager: [
        'inventory.view',
        'inventory.warehouse.view',
        'inventory.supplier.view',
        'inventory.stockIn.view',
        'inventory.stockIn.create',
        'inventory.stockIn.edit',
        'inventory.stockOut.view',
        'inventory.stockOut.create',
        'inventory.stockOut.edit'
      ],
      cashier: [
        'inventory.view'
      ],
      inventory_manager: [
        'inventory.view',
        'inventory.warehouse.view',
        'inventory.supplier.view',
        'inventory.stockIn.view',
        'inventory.stockIn.create',
        'inventory.stockIn.edit',
        'inventory.stockOut.view',
        'inventory.stockOut.create',
        'inventory.stockOut.edit'
      ]
    };
    
    return rolePermissions[user.role] && rolePermissions[user.role].includes(permission);
  } catch (error) {
    console.error('解析用户权限失败', error);
    return false;
  }
} 